home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 081-090 / amok85 / ampel / ampel.mod next >
Text File  |  1993-11-04  |  816b  |  48 lines

  1. MODULE Ampel;
  2.  
  3. IMPORT io;
  4.  
  5. TYPE
  6.   Ampel* = POINTER TO AmpelDesc;
  7.   AmpelDesc* = RECORD
  8.     rot*,gruen*: BOOLEAN;
  9.   END;
  10.  
  11. PROCEDURE (a: Ampel) Leuchte*(on: BOOLEAN): CHAR;
  12. BEGIN
  13.   IF on THEN RETURN "*"; ELSE RETURN "O"; END;
  14. END Leuchte;
  15.  
  16. PROCEDURE (a: Ampel) Schalten*();
  17. BEGIN
  18.   (* --- geht auch einfacher *)
  19.   IF a.gruen THEN
  20.     a.gruen := FALSE; a.rot := TRUE;
  21.   ELSE
  22.     a.gruen := TRUE; a.rot := FALSE;
  23.   END;
  24. END Schalten;
  25.  
  26. PROCEDURE (a: Ampel) Anzeigen*();
  27. BEGIN
  28.   io.Write(a.Leuchte(a.rot));
  29.   io.Write(a.Leuchte(a.gruen));
  30. END Anzeigen;
  31.  
  32. PROCEDURE (a: Ampel) istRot*(): BOOLEAN;
  33. BEGIN
  34.   RETURN a.rot & ~a.gruen;
  35. END istRot;
  36.  
  37. PROCEDURE (a: Ampel) istGruen*(): BOOLEAN;
  38. BEGIN
  39.   RETURN a.gruen & ~a.rot;
  40. END istGruen;
  41.  
  42. PROCEDURE Init*(a: Ampel);
  43. BEGIN
  44.   a.rot := TRUE; a.gruen := FALSE;
  45. END Init;
  46.  
  47. END Ampel.
  48.